package cn.itcast.web.controller.system;


import cn.itcast.domain.system.Module;
import cn.itcast.service.system.DeptService;
import cn.itcast.service.system.ModuleService;
import cn.itcast.web.controller.BaseController;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;


@Controller
@RequestMapping("/system/module")
public class ModuleController extends BaseController {
    @Autowired
    private ModuleService moduleService;

    /**
    *模块：显示模块列表
    *功能入口：aside.jsp点击模块管理
    *请求地址：http://locahost:8080/system/module/list.do
    *响应地址：http://locahost:8080/WEB-INF/pages/system/module/
    */

    @RequestMapping("/list")
    public String list(@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "5") Integer pageSize){
        PageInfo<Module> pageInfo = moduleService.findByPage(pageNum, pageSize);
        request.setAttribute("pageInfo",pageInfo);
        return "system/module/module-list";
    }


    /**
    *模块：进入模块添加页面
    *功能入口：点击新建
    *请求地址：http://locahost:8080//system/module/toAdd.do
    * 查询所有的模块放入请求域以便回显
     * 响应地址：http://locahost:8080/WEB-INF/pages/system/module/module-add.jsp
     *
    */
    @RequestMapping("/toAdd")
    public String toAdd(){
        List<Module> menus = moduleService.findAll();
        request.setAttribute("menus",menus);
        return "system/module/module-add";
    }


    /**
    *模块：添加/修改模块信息
    *功能入口：module-add.jsp点击保存
    *请求地址：http://locahost:8080/system/module/edit.do
    *响应地址：保存模块数据重定向到/system/module/list模块列表页面重新查询数据显示
    */
    @RequestMapping("/edit")
    public String edit(Module module){
        if(StringUtils.isEmpty(module.getId())){
            //参数没有模块id，执行添加
            moduleService.save(module);
        }
        else{
            //有模块id,执行更新
            moduleService.update(module);
        }
        return "redirect:/system/module/list";
    }

    /**
     *模块：进入模块修改页面
     *功能入口：点击编辑
     *请求地址：http://locahost:8080/system/module/toUpdate.do?id=n
     *响应处理：获取请求参数模块id查询原来模块信息放入请求域在修改页面回显
     * 查询所有的模块作为上级模块放入请求域以便回显
     * 响应地址：http://locahost:8080WEB-INF/pages/system/module/module-update.jsp
     *
     */
    @RequestMapping("/toUpdate")
    public String toUpdate(Model model,String id){
        //通过参数id查询一条模块数据
        Module module = moduleService.findById(id);
        //查询所有的模块作为放入请求域以便回显下拉列表上级模块
        List<Module> menus = moduleService.findAll();

        model.addAttribute("module",module).addAttribute("menus",menus);
        return "system/module/module-update";
    }

    /**
     *模块：删除一条模块信息
     *功能入口：module-list.jsp点击删除
     *请求地址：http://locahost:8080/system/module/delete.do?id=n
     *响应地址：删除成功重定向到/system/module/list页面
     */

    @RequestMapping("/delete")
    public String delete(String id){
        moduleService.delete(id);
        return "redirect:/system/module/list";
    }


}
